export default {
  /**
   * 同步localStorage里的数据到state数据里
   * @param {*} state state对象
   * @param {*} data localStorage获取到数据后组装的对象
   */
  SET_DATA(state, data) {

    const {
      phoneData,
      totalPrice,
      totalMount,
      cartData
    } = data;

    state.phoneData = phoneData;
    state.totalPrice = totalPrice;
    state.totalMount = totalMount;
    state.cartData = cartData;

    // console.log(state);
  },

  /**
   * 设置购物车总价和总数量
   * @param {*} state state对象
   * @param {*} payload 来自ListItem子组件传递过来的对象(包含price和type)
   */
  SET_TOTAL(state, payload) {
    const {
      price,
      type
    } = payload;

    switch (type) {
      //加一个到购物车时 价格相加/数量加1
      case 'PLUS':
        state.totalPrice += price;
        state.totalMount += 1;
        break;
        //从购物车减少一个 价格减少/数量减1
      case 'MINUS':
        state.totalPrice -= price;
        state.totalMount -= 1;
        break;
      default:
        break;
    }
  },

  /**
   * 设置购物车列表数据
   * @param {*} state state对象
   * @param {*} payload 来自ListItem子组件传递过来的对象(包含type,id,img,name,price,slogan)
   */
  SET_CART(state, payload) {
    const {
      type,
      id,
      img,
      name,
      price,
      slogan
    } = payload;

    //找到idx 不存在时 -1
    const idx = state.cartData.findIndex(item => Number(item.id) === id);

    //证明state.cartData.id不存在
    if (idx === -1) {
      //组装对象并放入state.cartData数组里
      state.cartData.push({
        id,
        img,
        name,
        price,
        slogan,
        totalMount: 1,
        totalPrice: price
      });
    } else {
      //存在(多次点击同一个商品时)
      switch (type) {
        //给当前重复添加的商品累加数量和价格
        case 'PLUS':
          state.cartData[idx].totalMount++;
          state.cartData[idx].totalPrice += price;
          break;
        case 'MINUS':
          //给当前重复减少的商品累减数量和价格
          state.cartData[idx].totalMount--;
          state.cartData[idx].totalPrice -= price;

          //当前商品的数量不能低于0
          if (state.cartData[idx].totalMount === 0) {
            //过滤掉 不符合条件 的对象
            state.cartData = state.cartData.filter(item => item.id !== id);
          }
          break;
        default:
          break;
      }
    }
  }
}